Networking is the practice of linking two or more computing devices together. In networking, the communication language used by such computing devices is called a protocol. A protocol is a standard that controls or enables the connection, communication, and data transfer between two computing endpoints. Protocols may be implemented by hardware, software, or a combination of the two. Although certain protocols may work both in wired and wireless environments, wireless networks are typically more prone to problems such as, for example, packet corruption and network congestion.
Transport layer protocols generally use one of two methods for controlling the rate at which packets are injected into the network. Under the first method, referred to as a “rate-based,” the available bit-rate of the network topology is determined and packets are transmitted separated by an appropriate temporal spacing. Under the second method, referred to as “sliding window,” the amount of outstanding data needed to keep the network busy at all times is determined, and this amount of data is constantly maintained in transit between the two end points. In the past, algorithms for determining the amount of data needed to keep a network busy have typically used packet-loss as an indication of network congestion.
When congestion-related packet loss occurs (e.g., due to an overflow in a bottleneck queue), the traditional network reaction has been to decrease the congestion window multiplicatively. For example, TCP decreases its congestion window by a factor of ½. This gives the queues an opportunity to drain, while giving competing flows of data a chance to obtain their fair share of the available resources. Unfortunately, in a wireless network, if many packets are lost due to wireless link errors, this approach only allows a fraction of the link's capacity to be effectively used.
Alternative TCP variations have attempted to address the additional problems presented by wireless networks, such as TCP Westwood and the Wireless Transmission Protocol (WTCP). The former is built around TCP's sliding window algorithm, whereas the latter is entirely rate-based. Both alternatives are based upon loss-differentiation algorithms